package com.atguigu.eduservice.client;

import com.atguigu.commonutils.R;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * 该类也就是VodClient的实现类，理论上来说我们使用nacos是不会使用这个实现类中的方法的
 * 因为当我们再service_edu模块的时候，我们需要使用vod模块的方法来删除阿里云里的视频文件
 * 那么vodClient是为了调用vod中的方法的，因此它如果不用hystrix的话，只需要创建接口即可，那么为什么要为其创建一个实现类？
 * 这就是为了熔断机制，当我们服务运行的时候，有可能出现一个问题，就是我们的edu模块没有问题，但是调用的vod模块宕机了
 * 这个时候我们调用它的方法就会出现问题，所以我们需要一个熔断器来帮助我们解决这个问题
 * 1 vod模块宕机的时候 会调用这个熔断器的方法 也就是直接用我们本实现类的方法来替代
 * 2 vod模块也有可能遇到长时间没有返回response的情况，那么我们可以利用熔断器来增长我们默认的返回阈值
 *
 * 我们只需要记住，在调用别的模块的方法的时候，如果一切执行正常，那么这个实现类的方法就不会被调用
 * 只有当出现问题的时候，我们才会调用这个熔断器的方法
 */
@Component
public class VodFileDegradeFeignClient implements VodClient{
    @Override
    public R removeAliyunVideo(String id) {
        return R.error().message("ERROR——删除单个视频出错");
    }

    @Override
    public R deleteBatch(List<String> videoIdList) {
        return R.error().message("ERROR——删除多个视频出错");
    }
}
